Telegram Group & Telegram Channel
🛠 How to: как соблюдать принцип DRY

DRY (Don’t Repeat Yourself) — принцип, согласно которому каждый фрагмент знания должен существовать в системе только в одном месте. Никакого копипаста и дублирующей логики.

Проблема: дублирование валидации
// Пример плохого кода
if (user.Age < 18)
throw new Exception("User must be at least 18");

...

if (user.Age < 18)
return BadRequest("User must be at least 18");

При изменении правила — нужно помнить обновить его везде. Ловушка копипаста.

Решение: вынос логики в общее правило
public static class ValidationRules
{
public static bool IsAdult(User user) => user.Age >= 18;
}


Теперь в коде
if (!ValidationRules.IsAdult(user))
throw new Exception("User must be at least 18");

// И в другом месте:
if (!ValidationRules.IsAdult(user))
return BadRequest("User must be at least 18");


Альтернатива: использование FluentValidation или DataAnnotations
public class User
{
[Range(18, int.MaxValue, ErrorMessage = "User must be at least 18")]
public int Age { get; set; }
}


Где чаще всего нарушают DRY в .NET:


• Повторяющиеся SQL-запросы и фильтры
• Повторение одинаковых exception'ов, логов, сообщений
• Дублирование конфигурации
• UI-формы и компоненты

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/csharpproglib/5841
Create:
Last Update:

🛠 How to: как соблюдать принцип DRY

DRY (Don’t Repeat Yourself) — принцип, согласно которому каждый фрагмент знания должен существовать в системе только в одном месте. Никакого копипаста и дублирующей логики.

Проблема: дублирование валидации

// Пример плохого кода
if (user.Age < 18)
throw new Exception("User must be at least 18");

...

if (user.Age < 18)
return BadRequest("User must be at least 18");

При изменении правила — нужно помнить обновить его везде. Ловушка копипаста.

Решение: вынос логики в общее правило
public static class ValidationRules
{
public static bool IsAdult(User user) => user.Age >= 18;
}


Теперь в коде
if (!ValidationRules.IsAdult(user))
throw new Exception("User must be at least 18");

// И в другом месте:
if (!ValidationRules.IsAdult(user))
return BadRequest("User must be at least 18");


Альтернатива: использование FluentValidation или DataAnnotations
public class User
{
[Range(18, int.MaxValue, ErrorMessage = "User must be at least 18")]
public int Age { get; set; }
}


Где чаще всего нарушают DRY в .NET:


• Повторяющиеся SQL-запросы и фильтры
• Повторение одинаковых exception'ов, логов, сообщений
• Дублирование конфигурации
• UI-формы и компоненты

🐸Библиотека шарписта #буст

BY Библиотека шарписта | C#, F#, .NET, ASP.NET




Share with your friend now:
tg-me.com/csharpproglib/5841

View MORE
Open in Telegram


Библиотека шарписта | C F NET ASP NET Telegram | DID YOU KNOW?

Date: |

To pay the bills, Mr. Durov is issuing investors $1 billion to $1.5 billion of company debt, with the promise of discounted equity if the company eventually goes public, the people briefed on the plans said. He has also announced plans to start selling ads in public Telegram channels as soon as later this year, as well as offering other premium services for businesses and users.

Библиотека шарписта | C F NET ASP NET from hk


Telegram Библиотека шарписта | C#, F#, .NET, ASP.NET
FROM USA